[PHP][MySQL] Skrypt logowania

W jaki sposób napisać skrypt logowania w PHP, tak, aby nikt z zewnątrz nie miał dostępu do części strony (zamknięta część, po rejestracji). Wiem że można zrobić rejestrację, i dane użytkowników (wystarczy login i hasło) zapisywać do bazy danych.

Ale jak później je pobrać, i sprawdzać, czy dany użytkownik jest zalogowany. Wykorzystać sesje, czy są jakieś inne (lepsze, bezpieczniejsze) rozwiązania? A może nie warto odkrywać koła na nowo, i skorzystać z jednego z gotowych rozwiązań? Tylko że nie chodzi mi o cały CMS, tylko prosty skrypt logowania, i kontroli sesji...

  • Generalnie jak koledzy wyżej powiedzieli: użyj sesji ;)

    Co do bazy proszę, żeby nie zapisywać tam haseł w czystej postaci! To podstawowy błąd. Ktoś dostanie się do bazy i zna hasła wszystkich użytkowników.

    Jak inaczej porównać? Bardzo łatwo.

    Przy rejestracji (lub dodawaniu nawet ręcznym do bazy) wystarczy zapisać hash hasła użytkownika np. md5(hasło), sha1(haslo) itd...

    Potem przy logowaniu porównujemy:

    if(md5($podane_haslo)) === $haslo_z_bazy) {...

    Pamiętaj też żeby zabezpieczyć formularze!


    Jestem przewrażliwiony na tym punkcie po poprawianiu strony w której zapytania można było pisać w adresie, a w bazie wszystkie hasła plain text ;)

  • Wystarczą sesje. Tylko za każdym razem odnawiaj sesję, aby nie można było podać się za kogoś i w sesjach nie przechowuj hasła (przynajmniej nie w formie raw)

  • Poczytaj o sesjach - to rozwieje Twoje wątpliwości, młody programisto :P

  • jw sesje acz wypadałoby je troche zabezpieczyć bo stosując gołą sesje wystarczy ukraść id sesji (czy to z linka czy ciastka) i hulaj dusza. Trzeba sprawdzac ip usera czyli w zmienna sesyjna wpisujemy ip usera w momencie logowania i na kazdej podstronie sprawdzamy to do tego można pokusic sie o sprawdzanie user-agenta przeglądarki tak na wszelki wypadek i powinno być całkiem bezpiecznie

  • Rozwiązanie z ciastkiem jest dużo mniej bezpieczne. W zasadzie wszystko czego potrzebujesz opisał kolega veritas. Po utworzeniu sesji (session_start()) oraz poprawnym zweryfikowaniu użytkownika tworzysz jakąś zmienną sesyjną i na jej podstawie dajesz lub nie dostęp do podstron.

  • Na etapie na ktorym zadaje sie takie pytania, proponuje na razie olac mysql i przeczytac o hasle w .htaccess ... zabezpiecz sobie co potrzebujuesz i poznije na spokojnie brnij dalej w te ślepą uliczkę nazywaną PHP ;-)

Zaloguj się, aby dodać swoją odpowiedź